"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/27 14:05
@Description : 

类   ->  数据库  表     数据模型
1.   def __str__(self):    格式化打印对象
2.   def __eq__(self, other)   ==
3.   def __gt__(self, other)   >
4.   def __ge__(self, other)   >=
5.   def __lt__(self, other)   <
6.   def __le__(self, other)  <=
7.   def __ne__(self, other)  !=
8.   def __hash__(self, other)   通过hash的返回值判定唯一性
"""


class Aoo:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 打印对象时 会自动调用该方法
    def __str__(self):
        return f'name = {self.name}, age = {self.age}'


class Student:
    def __init__(self, stu_no, name, age):
        self.stu_no = stu_no
        self.name = name
        self.age = age

    # 对象是否相等
    def __eq__(self, other):
        # 学号相等 就是同一个学生
        return self.stu_no == other.stu_no

    # 大于
    def __gt__(self, other):
        print('gt')
        return self.age > other.age

    def __hash__(self):
        print('hash')
        return hash(self.stu_no)


if __name__ == '__main__':
    """
     aoo = Aoo('tom', 20)
    # 查看对象中的属性值  对象.属性名
    # print(aoo.name)
    # print(aoo.age)
    print(aoo)
    
    """
    stu1 = Student('202505001', 'tom', 30)
    stu2 = Student('202505001', 'tom', 20)
    # 默认 比较的地址
    # print(stu1 == stu2)
    # print(stu1 > stu2)

    # 将对象作为字典的key进行使用   key要唯一  hash() 不可改变
    dct = {
        stu2: 'stu2',
        stu1: 'stu1'
    }
    print(dct)
